//<%@ page pageEncoding="UTF-8" trimDirectiveWhitespaces="true"%>
$(function() {

	// 根据 id 获取对象
	function getRole(id) {
		for (var i = 0; i < roles.length; i++) {
			var role = roles[i];
			if (role.id == id) {
				return role;
			}
		}
		return null;
	}

	// 列表初始化
	$("#list-table").DataTable();
	$("#list-table").rowHoverShow();

	// 重置表单
	function resetEditForm(role) {
		$("#edit-form").reset(role);
		$("#btn-save").attr("disabled", false);
		$("#edit-form").validator('cleanUp');
		$("#edit-form .alert").remove();
		$.fn.zTree.getZTreeObj("action-tree").checkAllNodes(false);
	}

	// 新增按钮
	$("#btn-add").click(function() {
		resetEditForm();
		$("#edit-form .modal-title").html("新增角色");
		$("#edit-form").parent().modal("show");
	});

	// 修改按钮
	$(".btn-edit").click(function() {
		var id = $(this).data("id");
		var role = getRole(id);
		resetEditForm(role);

		// 初始化权限勾选状态
		var actionTree = $.fn.zTree.getZTreeObj("action-tree");
		for (var i = 0; i < role.actionIds.length; i++) {
			var node = actionTree.getNodeByParam("id", role.actionIds[i]);
			actionTree.checkNode(node, true, true);
		}

		$("#edit-form .modal-title").html("修改角色 { ID=" + id + " }");
		$("#edit-form").parent().modal("show");
	});

	// 删除按钮
	$(".btn-del").click(function() {
		var id = $(this).data("id");
		var role = getRole(id);
		$("#del-form").reset(role);
		$("#btn-del-confirm").attr("disabled", false);
		$("#del-form .alert").remove();
		$("#del-form .modal-title").html("删除角色 { ID=" + id + " }");
		$("#del-form .roleName").html(role.name);
		$("#del-form").parent().modal("show");
	});

	// 删除表单
	$("#del-form").ajaxGetOnValid({
		"serialize" : function(data) {
			// 禁用按钮防止重复提交
			$("#btn-del-confirm").attr("disabled", true);
			$("#del-form .alert").remove();
		},
		"complete" : function(data) {
			$("#btn-del-confirm").attr("disabled", false);
			if (data.errors.length) {
				// 删除失败
				$("#del-form .modal-footer").before($.alert({
					"style" : "error",
					"title" : "删除失败",
					"msg" : data.errors.join("<br>")
				}));
			} else {
				// 删除成功
				$("#del-form .modal-footer").before($.alert({
					"msg" : "删除成功！"
				}));
				window.setTimeout(function() {
					$("#del-form").parent().modal("hide");
					location.href = "./list";
				}, 500);
			}
		}
	});

	// 编辑表单提交
	$("#edit-form").postJsonOnValid({
		"serialize" : function(data) {
			var actionIds = [];
			var nodes = $.fn.zTree.getZTreeObj("action-tree").getCheckedNodes(true);
			for (var j = 0; j < nodes.length; j++) {
				var node = nodes[j];
				if (!node.isParent) {
					actionIds.push(node.id);
				}
			}
			data["actionIds"] = actionIds;
			// 禁用按钮防止重复提交
			$("#btn-save").attr("disabled", true);
			$("#edit-form .alert").remove();
		},
		"post" : function(data) {
			$("#btn-save").attr("disabled", false);
			if (data.errors.length) {
				// 保存失败
				$("#edit-form .modal-footer").before($.alert({
					"style" : "error",
					"title" : "保存失败",
					"msg" : data.errors.join("<br>")
				}));
			} else {
				// 保存成功
				$("#edit-form .modal-footer").before($.alert({
					"msg" : "保存成功！"
				}));
				window.setTimeout(function() {
					$("#edit-form").parent().modal("hide");
					location.href = "./list";
				}, 500);
			}
		}
	});

	// 创建权限树
	$.fn.zTree.init($("#action-tree"), {
		check : {
			enable : true,
			chkboxType : {
				"Y" : "ps",
				"N" : "ps"
			}
		},
		data : {
			keep : {
				parent : true
			},
			simpleData : {
				enable : true
			}
		},
		callback : {
			// 单击节点文字触发勾选
			onClick : function(event, treeId, treeNode) {
				$.fn.zTree.getZTreeObj(treeId).checkNode(treeNode, !treeNode.checked, true, true);
			}
		}
	}, actionTreeNodes);

});